package com.chaoxuan.uebt.service;

import com.chaoxuan.uebt.model.Ad;
import com.chaoxuan.uebt.model.Address;
import com.chaoxuan.uebt.model.Balance;
import com.chaoxuan.uebt.model.Index;
import com.chaoxuan.uebt.model.News;
import com.chaoxuan.uebt.model.Order;
import com.chaoxuan.uebt.model.StoreOrder;
import com.chaoxuan.uebt.model.Uebt;
import com.chaoxuan.uebt.model.Update;
import com.chaoxuan.uebt.model.User;
import com.chaoxuan.uebt.model.Result;
import com.chaoxuan.uebt.model.Store;
import com.chaoxuan.uebt.model.UserIncome;
import com.chaoxuan.uebt.model.UserIncomeList;
import com.chaoxuan.uebt.model.Vercode;
import com.chaoxuan.uebt.model.Wallet;
import com.chaoxuan.uebt.model.WalletHistory;

import java.util.List;

import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * Created by Administrator on 2017/3/14.
 */
public interface APIService {

    /**
     * 广告位
     * @return
     */
    @POST("/api/home/index/ad")
    Observable<Result<List<Ad>>> ad();

    /**
     * 验证码
     * @param user_login
     * @return
     */
    @POST("/api/home/common/sendVercode")
    Observable<Result<Vercode>> sendVercode(@Query("user_login")String user_login);

    /**
     * 注册
     * @param user_login
     * @param user_pass
     * @param captcha
     * @param invitecode
     * @param device_type
     * @return
     */
    @POST("/api/home/public/register")
    Observable<Result<User>> register(@Query("user_login")String user_login, @Query("user_pass")String user_pass, @Query("captcha")String captcha, @Query("invitecode")String invitecode, @Query("device_type")String device_type);

    /**
     * 登录
     * @param user_login
     * @param user_pass
     * @param device_type
     * @return
     */
    @POST("/api/home/public/login")
    Observable<Result<User>> login(@Query("user_login")String user_login, @Query("user_pass")String user_pass, @Query("device_type")String device_type);

    /**
     * 找回密码error
     * @param user_login
     * @param ver_code
     * @param new_pass
     * @return
     */
    @POST("/api/home/public/findPass")
    Observable<Result> findPass(@Query("user_login")String user_login, @Query("ver_code")String ver_code, @Query("new_pass")String new_pass);

    /**
     * 添加钱包地址
     * @param token
     * @param wallet
     * @param device_type
     * @return
     */
    @POST("/api/home/user/addWalletUrl")
    Observable<Result> addWalletUrl(@Query("token")String token, @Query("wallet")String wallet, @Query("device_type")String device_type);

    /**
     * 新闻资讯
     * @param page
     * @param type=1
     * @return
     */
    @POST("/api/home/news/indexNews")
    Observable<Result<List<News>>> indexNews(@Query("count")int page, @Query("type")String type);

    /**
     * 资讯详情
     * @param id
     * @return
     */
    @POST("/api/home/news/detailNews")
    Observable<Result<News>> detailNews(@Query("id")String id);

    /**
     * 全部公告
     * @param page
     * @param type=2
     * @return
     */
    @POST("/api/home/news/indexNotice")
    Observable<Result<List<News>>> indexNotice(@Query("count")int page, @Query("type")String type);

    /**
     * 超选商城
     * @param page
     * @return
     */
    @POST("/api/home/store/index")
    Observable<Result<List<Store>>> indexStore(@Query("count")int page);

    /**
     * 商品详情
     * @param id
     * @return
     */
    @POST("/api/home/store/detail")
    Observable<Result<Store>> storeDetail(@Query("id")String id);


    /**
     * 获取用户账户余额
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/getUserBalance")
    Observable<Result<Balance>> getUserBalance(@Query("token")String token, @Query("device_type")String device_type);


    /**
     * 首页
     * @param page
     * @return
     */
    @POST("/api/home/index/index")
    Observable<Result<Index>> index(@Query("token")String token, @Query("device_type")String device_type);


    /**
     * 用户首页
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/index")
    Observable<Result<User>> userIndex(@Query("token")String token, @Query("device_type")String device_type);


    /**
     * 兑换订单
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/orderLists")
    Observable<Result<List<Order>>> orderLists(@Query("count")int page,@Query("status")int status,@Query("token")String token, @Query("device_type")String device_type);

    /**
     * 订单详情
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/orderDetail")
    Observable<Result<Order>> orderDetail(@Query("token")String token,@Query("id")String id, @Query("device_type")String device_type);



    /**
     * 修改资金密码
     * @param token
     * @param old_pass
     * @param new_pass
     * @param device_type
     * @return
     */
    @POST("/api/home/user/editDealPass")
    Observable<Result<Object>> editDealPass(@Query("token")String token,@Query("old_pass")String old_pass,@Query("new_pass")String new_pass,@Query("device_type")String device_type);


    /**
     * 添加资金密码
     * @param token
     * @param deal_pass
     * @param device_type
     * @return
     */
    @POST("/api/home/user/addDealPass")
    Observable<Result<Object>> addDealPass(@Query("token")String token,@Query("deal_pass")String deal_pass,@Query("device_type")String device_type);


    /**
     * 确定收货
     * @param token
     * @param id
     * @param device_type
     * @return
     */
    @POST("/api/home/user/endOrder")
    Observable<Result<Object>> endOrder(@Query("token")String token,@Query("id")String id,@Query("device_type")String device_type);


    /**
     * 修改登录密码
     * @param token
     * @param old_pass
     * @param new_pass
     * @param device_type
     * @return
     */
    @POST("/api/home/user/changePass")
    Observable<Result<Object>> changePass(@Query("token")String token,@Query("old_pass")String old_pass,@Query("new_pass")String new_pass,@Query("device_type")String device_type);

    /**
     * 修改钱包地址
     * @param token
     * @param wallet_url
     * @param deal_pass
     * @param device_type
     * @return
     */
    @POST("/api/home/user/editWalletUrl")
    Observable<Result<Object>> editWalletUrl(@Query("token")String token,@Query("wallet_url")String wallet_url,@Query("device_type")String device_type);


    /**
     * 我的钱包
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/wallet")
    Observable<Result<Wallet>> wallet(@Query("token")String token, @Query("device_type")String device_type);

    /**
     * 资金记录
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/changeLists")
    Observable<Result<List<WalletHistory>>> changeLists(@Query("token")String token,@Query("count")int page,@Query("device_type")String device_type);

    /**
     * 兑换UEBT
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/apply")
    Observable<Result<Uebt>> apply(@Query("token")String token, @Query("device_type")String device_type);

    /**
     * 提交兑换申请
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/doApply")
    Observable<Result<Object>> doApply(@Query("token")String token,@Query("count")String count, @Query("device_type")String device_type);


    /**
     * 兑换虚拟商品error
     * 兑换成功应该返回卡号密码
     * @param token
     * @param id
     * @param device_type
     * @return
     */
    @POST("/api/home/store/payNetwork")
    Observable<Result<StoreOrder>> payNetwork(@Query("token")String token, @Query("id")String id, @Query("device_type")String device_type);


    /**
     * 兑换实物商品 error
     * @param token
     * @param id
     * @param device_type
     * @return
     */
    @POST("/api/home/store/payTrue")
    Observable<Result<StoreOrder>> payTrue(@Query("token")String token,@Query("id")String id,@Query("count")int count,@Query("device_type")String device_type);


    /**
     * 获取用户收货信息
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/getUserAddress")
    Observable<Result<Address>> getUserAddress(@Query("token")String token,@Query("device_type")String device_type);

    /**
     * 添加收货信息
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/store/addAddress")
    Observable<Result<Object>> addAddress(@Query("token")String token,
                                          @Query("name")String name,
                                          @Query("mobile")String mobile,
                                          @Query("province")String province,
                                          @Query("city")String city,
                                          @Query("address")String address,
                                          @Query("device_type")String device_type);

    /**
     * 修改收货信息
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/store/editAddress")
    Observable<Result<Object>> editAddress(@Query("token")String token,
                                          @Query("name")String name,
                                          @Query("mobile")String mobile,
                                          @Query("province")String province,
                                          @Query("city")String city,
                                          @Query("address")String address,
                                          @Query("device_type")String device_type);

    /**
     * 用户会员收益列表
     * @param token
     * @param device_type
     * @return
     */
    @POST("/api/home/user/userIncomeLists")
    Observable<Result<List<UserIncomeList>>> userIncomeLists(@Query("token")String token, @Query("count")int page, @Query("device_type")String device_type);


    @POST("/api/home/user/userIncome")
    Observable<Result<UserIncome>> userIncome(@Query("token")String token,@Query("device_type")String device_type);

    @POST("/api/home/public/version")
    Observable<Result<Update>> version();

}
